import Foundation

class TodoManager {
    static let shared = TodoManager()
    
    private let userDefaults = UserDefaults.standard
    private let todoKey = "savedTodos"
    
    private(set) var todos: [TodoItem] = [] {
        didSet {
            saveTodos()
        }
    }
    
    private init() {
        loadTodos()
    }
    
    func addTodo(_ todo: TodoItem) {
        todos.append(todo)
    }
    
    func updateTodo(at index: Int, with todo: TodoItem) {
        guard index >= 0 && index < todos.count else { return }
        todos[index] = todo
    }
    
    func toggleCompletion(at index: Int) {
        guard index >= 0 && index < todos.count else { return }
        todos[index].isCompleted.toggle()
    }
    
    func deleteTodo(at index: Int) {
        guard index >= 0 && index < todos.count else { return }
        todos.remove(at: index)
    }
    
    private func saveTodos() {
        if let encoded = try? JSONEncoder().encode(todos) {
            userDefaults.set(encoded, forKey: todoKey)
        }
    }
    
    private func loadTodos() {
        if let savedTodos = userDefaults.object(forKey: todoKey) as? Data {
            if let decodedTodos = try? JSONDecoder().decode([TodoItem].self, from: savedTodos) {
                todos = decodedTodos
                return
            }
        }
        
        // 默认任务
        todos = [
            TodoItem(title: "完成iOS应用开发", priority: .high, notes: "实现毛玻璃效果的TodoList"),
            TodoItem(title: "学习SwiftUI", priority: .normal),
            TodoItem(title: "阅读设计文档", priority: .low, notes: "了解iOS设计规范")
        ]
    }
}